package com.szjk.gateway.config;

import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Mono;

/**
 * @author chenxinglin
 * @version 1.0
 * @description 路由请求频率控流（令牌桶）
 * @date 2021-12-01 14:26
 * @company szjk
 */
@Configuration
public class RouteRateLimiterConfig {

//    /**
//     * 用户请求限流策略
//     * 根据用户ID限流
//     * @return
//     */
//    @Bean
//    KeyResolver userKeyResolver () {
//        return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("userId"));
//    }

    /**
     * 用户请求限流策略
     * 根据用户的IP限流
     * @return
     */
    @Bean
    KeyResolver ipKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
    }
//
//    /**
//     * 用户请求限流策略
//     * 根据用户的URL限流
//     * @return
//     */
//    @Bean
//    KeyResolver apiKeyResolver() {
//        return exchange -> Mono.just(exchange.getRequest().getPath().value());
//    }


}
